import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;

/**
 * @className: ceshi
 * @description: 
 * @author: myself
 * @date: 2025/7/29 10:12
 * @version: 0.1
 * @since: JDK17
 */
 
public class arrayToCollection {
    public static void main(String[] args){
        int[] nums1 = {1, 2, 4, 5, 6};
        int[] nums2 = {2, 4, 3, 6, 7};
        //将数组转换成为集合
        /*
        * 1.Arrays.stream(nums1)：将数组转换成流，输出的返回值为IntStream
        * 2.boxed(),将基本数据类型转换成包装类
        * 3.collect(Collectors.toSet())，将流收集为一个集合
        * */
        Set<Integer> collect = Arrays.stream(nums1).boxed().collect(Collectors.toSet());
        /*
        *1.Arrays.stream(nums2)：将数组转换成流，输出的返回值为IntStream
        *2.filter()：对流中每个数据进行过滤
        *3.filter(collect::remove)
        *   collect 初始为 {1, 2, 4, 5, 6}
            遍历 nums2 = {2, 4, 3, 6, 7}：
            2: collect.remove(2) → true（存在，删除）→ 保留
            4: collect.remove(4) → true（存在，删除）→ 保留
            3: collect.remove(3) → false（不存在）→ 过滤
            6: collect.remove(6) → true（存在，删除）→ 保留
            7: collect.remove(7) → false → 过滤
            最终 array = [2, 4, 6]
        *4.toArray()，返回数组，无需boxed()*/
        int[] array = Arrays.stream(nums2).filter(collect::remove).toArray();
        for (int i : array) {
            System.out.println(i);
        }
    }
}
